Track format use counts to we can assign development priorities better.
authorrobertl <robertl>
Sun, 17 Jan 2010 01:42:10 +0000 (01:42 +0000)
committerrobertl <robertl>
Sun, 17 Jan 2010 01:42:10 +0000 (01:42 +0000)
gui/format.cpp
gui/format.h
gui/mainwindow.cpp
gui/setup.iss
gui/upgrade.cpp
gui/upgrade.h

index 15556669938125462d7d54d45efde728397dc48f..6ce2e2e706f5d6a04114d789d33af883076a7fad 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-// $Id: format.cpp,v 1.2 2009/11/02 20:38:02 robertl Exp $
+// $Id: format.cpp,v 1.3 2010/01/17 01:42:10 robertl Exp $
 //------------------------------------------------------------------------
 //
 //  Copyright (C) 2009  S. Khai Mong <khai@mangrai.com>.
@@ -21,6 +21,7 @@
 //
 //------------------------------------------------------------------------
 #include "format.h"
+#include "mainwindow.h"
 
 QString Format::htmlBase = QString();
 
@@ -50,12 +51,19 @@ void Format::saveSettings(QSettings &settings)
 {
   saveOptions(settings, name+".input", inputOptions);
   saveOptions(settings, name+".output", outputOptions);
+  // TODO: Finish this; let's not corrupt the .plsts until we can start from zero.
+  if (getReadUseCount() || getWriteUseCount()) {    
+    settings.setValue(name + ".readcount", getReadUseCount());
+    settings.setValue(name + ".writecount", getWriteUseCount());
+  }
 }
 
 void Format::restoreSettings(QSettings &settings)
 {
   restoreOptions(settings, name+".input", inputOptions);
   restoreOptions(settings, name+".output", outputOptions);
+  bumpReadUseCount(settings.value(name + ".readcount").toInt());
+  bumpWriteUseCount(settings.value(name + ".writecount").toInt());
 }
 
 void Format::setToDefault()
@@ -68,4 +76,4 @@ void Format::setToDefault()
     outputOptions[i].setSelected(false);
     outputOptions[i].setValue(QVariant());
   }
-}
+}
\ No newline at end of file
index e3bb00e61fab485e871c2cd8a62acbf486c2d054..d2e18316f28a08611e0716d556f1398de7230be6 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-// $Id: format.h,v 1.2 2009/11/02 20:38:02 robertl Exp $
+// $Id: format.h,v 1.3 2010/01/17 01:42:10 robertl Exp $
 //------------------------------------------------------------------------
 //
 //  Copyright (C) 2009  S. Khai Mong <khai@mangrai.com>.
@@ -109,7 +109,9 @@ class Format
           fileFormat(false),
           deviceFormat(false),
           extensions(QStringList()),
-           html(QString())
+     html(QString()),
+     readUseCount_(0),
+     writeUseCount_(0)
   {
     inputOptions.clear();
     outputOptions.clear();
@@ -131,7 +133,10 @@ class Format
     extensions(extensions),
     inputOptions(inputOptions),
     outputOptions(outputptions),
-    html(QString())
+    html(QString()),
+    readUseCount_(0),
+    writeUseCount_(0)
+  
   {
   }
 
@@ -143,7 +148,10 @@ class Format
     extensions(c.extensions),
     inputOptions(c.inputOptions),
     outputOptions(c.outputOptions),
-    html(c.html)
+    html(c.html),
+    readUseCount_(0),
+    writeUseCount_(0)
+  
   {
   }
 
@@ -181,7 +189,13 @@ class Format
   void setToDefault();
   static QString getHtmlBase() { return htmlBase; }
   static void setHtmlBase(const QString &s) { htmlBase = s; }
-
+  
+  void bumpReadUseCount(int v)  { readUseCount_ += v; }
+  void bumpWriteUseCount(int v) { writeUseCount_ += v; }
+  int getReadUseCount()  const { return readUseCount_; }
+  int getWriteUseCount() const { return writeUseCount_; }
+  void zeroUseCounts(void);
+  
  private:
   QString name, description;
   bool readWaypoints, readTracks, readRoutes;
@@ -192,6 +206,8 @@ class Format
   QList<FormatOption>outputOptions;
   QString html;
   static QString htmlBase;
+  int      readUseCount_;
+  int      writeUseCount_;
   
 };
 
index 914ce3f36cbe39501660666e28945c265b17b653..23cd8de4d88003f0e36e1a57e790a21d4e4f0c24 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-// $Id: mainwindow.cpp,v 1.12 2009/11/02 20:38:02 robertl Exp $
+// $Id: mainwindow.cpp,v 1.13 2010/01/17 01:42:10 robertl Exp $
 //------------------------------------------------------------------------
 //
 //  Copyright (C) 2009  S. Khai Mong <khai@mangrai.com>.
@@ -169,7 +169,9 @@ MainWindow::MainWindow(QWidget* parent): QMainWindow(parent)
   //--- Restore from registry
   restoreSettings();
   upgrade = new UpgradeCheck();
-  upgrade->checkForUpgrade(babelVersion, bd.upgradeCheckMethod, bd.upgradeCheckTime, bd.installationUuid);
+  upgrade->checkForUpgrade(babelVersion, bd.upgradeCheckMethod, 
+                           bd.upgradeCheckTime, bd.installationUuid,
+                           formatList);
 }
 
 //------------------------------------------------------------------------
@@ -781,13 +783,18 @@ void MainWindow::applyActionX()
   args << (formatList[fidx].getName() + MakeOptions(formatList[fidx].getInputOptions()));
 
   // Input file(s) or device
+  int read_use_count = 0;
   if (bd.inputType == BabelData::fileType) {
-    for (int i=0; i<bd.inputFileNames.size(); i++)
+    for (int i=0; i<bd.inputFileNames.size(); i++) {
       args << "-f" << bd.inputFileNames[i];
+      read_use_count++;
+    }
   }
   else {
     args << "-f" << bd.inputDeviceName;
+    read_use_count++;
   }
+  formatList[fidx].bumpReadUseCount(read_use_count);
 
   // --- Filters!
   args << filterData.getAllFilterStrings();
@@ -807,11 +814,13 @@ void MainWindow::applyActionX()
     // output file or device option
     if (outIsFile) {
       if (bd.outputFileName != "")
-       args << "-F" << bd.outputFileName;
+             args << "-F" << bd.outputFileName;
     }
     else if (bd.outputType == BabelData::deviceType) {
       args << "-F" << bd.outputDeviceName;
     }
+    // GUI only ever writes a single file at a time.
+    formatList[fidx].bumpWriteUseCount(1);
   }
 
   // Now output for preview in google maps
index a0366579c808d17df8ab66babcf85e71e08698de..ddd0b23deb11e322662efb63e0e64ce57d5bc1e0 100755 (executable)
@@ -1,4 +1,4 @@
-; $Id: setup.iss,v 1.11 2009/11/02 20:38:02 robertl Exp $\r
+; $Id: setup.iss,v 1.12 2010/01/17 01:42:10 robertl Exp $\r
 ;\r
 ; NOTE: setup.iss is generated from setup.iss.in via autoconf.\r
 ; The generated setup.iss is checked in to help keep the version numbers\r
index c366d3c7c00c6b2b74974d2d0e369ca958309666..91540ba0f4dcbe3fb59db35062ceb5a85e36a0b1 100644 (file)
@@ -1,5 +1,5 @@
 // -*- C++ -*-
-// $Id: upgrade.cpp,v 1.17 2009/09/14 14:20:39 robertl Exp $
+// $Id: upgrade.cpp,v 1.18 2010/01/17 01:42:10 robertl Exp $
 /*
     Copyright (C) 2009  Robert Lipe, robertlipe@gpsbabel.org
 
@@ -21,6 +21,7 @@
 
 
 #include "upgrade.h"
+#include "format.h"
 #include "../config.h"
 #include "../gbversion.h"
 
@@ -106,11 +107,13 @@ QString UpgradeCheck::getOsVersion()
 UpgradeCheck::updateStatus UpgradeCheck::checkForUpgrade(const QString &currentVersionIn,
                int checkMethod,
                const QDateTime &lastCheckTime,
-               const QString &installationUuid)
+               const QString &installationUuid,
+               QList<Format> &formatList)
 {
   this->currentVersion = currentVersionIn;
   this->currentVersion.remove("GPSBabel Version ");
   this->upgradeCheckMethod = checkMethod;
+  this->formatList = &formatList;
 
   QDateTime soonestCheckTime = lastCheckTime.addDays(1);
   if (!testing && QDateTime::currentDateTime() < soonestCheckTime) {
@@ -126,9 +129,11 @@ UpgradeCheck::updateStatus UpgradeCheck::checkForUpgrade(const QString &currentV
           this, SLOT(readResponseHeader(const QHttpResponseHeader &)));
 
   QHttpRequestHeader header("POST", "/upgrade_check.html");
-  header.setValue("Host",  "www.gpsbabel.org");
+
+  const QString host("www.gpsbabel.org" );
+  header.setValue("Host",  host);
+
   header.setContentType("application/x-www-form-urlencoded");
-  header.setValue("Host", "www.gpsbabel.org");
   QLocale locale;
 
   QString args = "current_version=" + currentVersion;
@@ -145,7 +150,20 @@ UpgradeCheck::updateStatus UpgradeCheck::checkForUpgrade(const QString &currentV
   args += "&beta_ok=1";   // Eventually to come from prefs.
   args += "&lang=" + QLocale::languageToString(locale.language());
 
-  http->setHost("www.gpsbabel.org");
+  int j = 0;
+  for (int i = 0; i < formatList.size(); i++) {
+    int rc = formatList[i].getReadUseCount();
+    int wc = formatList[i].getWriteUseCount();
+    QString formatName = formatList[i].getName();
+    if (rc)
+      args += QString("&uc%1=rd/%2/%3").arg(j++).arg(formatName).arg(rc);
+    if (wc)
+      args += QString("&uc%1=wr/%2/%3").arg(j++).arg(formatName).arg(wc);
+  }
+  if (j)
+    args += QString("&uc=%1").arg(j);
+  
+  http->setHost(host, 80);
   httpRequestId = http->request(header, args.toUtf8());
 
   return UpgradeCheck::updateUnknown;
@@ -191,7 +209,7 @@ void UpgradeCheck::httpRequestFinished(int requestId, bool error)
   if (testing)
     currentVersion =  "1.3.1"; // for testing
 
-  bool allowBeta = false;  // TODO: come from prefs or current version...
+  bool allowBeta = true;  // TODO: come from prefs or current version...
 
   QDomNodeList upgrades = document.elementsByTagName("update");
   QUrl downloadUrl;
@@ -207,9 +225,10 @@ void UpgradeCheck::httpRequestFinished(int requestId, bool error)
     }
     bool updateIsBeta  = upgrade.attribute("type") == "beta";
     bool updateIsMajor = upgrade.attribute("type") == "major";
-    bool updateCandidate = updateIsMajor || (updateIsBeta && allowBeta);
-    upgradeText = upgrade.firstChildElement("overview").text();
+    bool updateIsMinor = upgrade.attribute("type") == "minor";
 
+    bool updateCandidate = updateIsMajor || updateIsMinor || (updateIsBeta && allowBeta);
+    upgradeText = upgrade.firstChildElement("overview").text();
     // String compare, not a numeric one.  Server will return "best first".
     if((updateVersion > currentVersion) && updateCandidate) {
       response = tr("A new version of GPSBabel is available.<br />"
index cbb5fcd3c97db3c6b696b8a633b899e4a485bcd9..78704b4214dbdde8bf06b011ba590580202916e1 100644 (file)
@@ -19,7 +19,7 @@
 
  */
 
-
+#include "format.h"
 #include <QDialog>
 #include <QDateTime>
 #include <QHttp>
@@ -42,7 +42,10 @@ public:
   UpgradeCheck::updateStatus checkForUpgrade(const QString &babelVersion, 
                                             int upgradeCheckMethod,
                                             const QDateTime &lastCheckTime,
-                                            const QString &installationUuid);
+                                            const QString &installationUuid,
+               QList<Format> &formatList
+                                             
+                                             );
   QDateTime getUpgradeWarningTime() {
     return upgradeWarningTime;
   }
@@ -59,12 +62,10 @@ protected:
   QDateTime upgradeWarningTime;  // invalid time if this object never issued.
   QString getOsName(void);
   QString getOsVersion(void);
-
+  QList<Format> *formatList;
 
 private slots:
   void httpRequestFinished(int requestId, bool error);
-
-//  void httpStateChanged(int state);
   void readResponseHeader(const QHttpResponseHeader &responseHeader);